﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using decode;
using System.IO;
using System.Xml.Serialization;


namespace WebService
{
    /// <summary>
    /// Description résumée de webDecode
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // Pour autoriser l'appel de ce service Web depuis un script à l'aide d'ASP.NET AJAX, supprimez les marques de commentaire de la ligne suivante. 
    // [System.Web.Script.Services.ScriptService]
    public class webDecode : System.Web.Services.WebService
    {
        public static List<Cl_dico> dicos { get; set; }
        public webDecode()
        {
            chargerDicos();
        }
        //chargement des dicos
        private static void chargerDicos()
        {
            //Debug.WriteLine("Chargment des dicos");


            dicos = new List<Cl_dico>(0);
            string mydocpath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\dico";
            //string sPath = @"D:\dico\";
            foreach (string sFileName in Directory.GetFiles(mydocpath))
            {
                if (Path.GetExtension(sFileName) == ".txt")
                {
                    dicos.Add(new Cl_dico(sFileName));
                }
            }

            //Debug.WriteLine("Fin Chargment des dicos");
        }

        /// <summary>
        /// Appel de la fonction de décryptage
        /// </summary>
        /// <param name="msg">le data se compse de 0:user, 1: texte à traduire , 2: langue si null alors "all"</param>
        /// <returns>le data se compose de 0:user | 1: texte à traduire | 2: langue | 3: Cl_decode echantillon(clé, pourcentage, temps, echantillon (echantillon codé), text( echantillon tarduit)), langue | 4: Cl_decode text(clé, echantillon (codé), text(tarduit))</returns>
        [WebMethod]
        [SoapInclude(typeof(Cl_decode))]
        [XmlInclude(typeof(Cl_decode))]
        public STG m_service(STG msg)
        {
            //log
            //USER u = (USER)msg.data[0];
            string u = (string)msg.data[0];
            //CL_historique.Log(u + " utilise le web service décode");

            Cl_workflow work = new Cl_workflow(msg.data[2].ToString());
            List<Cl_decode> decode = work.trouverCryptage(msg.data[1].ToString());
            Cl_decode meileur = decode[0];
            meileur.enchantillon = msg.data[1].ToString();
            meileur.text = "";
            meileur.decrypterTout();



            STG msgRetour = new STG();
            msgRetour = msg;
            msgRetour.statut_op = true;
            msgRetour.data = new List<object>();
            
            //msgRetour.data.Add(meileur);
            foreach (Cl_decode decod in decode)
            {
                msgRetour.data.Add(decod);
            }
            

            //msg.data[3] = decode;
            //msg.data[4] = meileur;

            //log
            CL_historique.Log(u+ " fin d'utilisation du web service avec " + meileur.cle + " pour clé");
            return msg;
        }
    }
}
